package com.task.common.redis;

import com.task.common.core.domain.R;
import com.task.common.redis.core.RedisKeyDefine;
import org.apache.poi.hssf.record.DVALRecord;

import java.time.Duration;

import static com.task.common.redis.core.RedisKeyDefine.KeyTypeEnum.STRING;

public interface RedisKeyConstants {

    RedisKeyDefine MEMO = new RedisKeyDefine("备注", // 备注
                        "social_auth_state:%s", // 参数
                         STRING,//Redis数据类型
                         String.class, //参数类型
                         Duration.ofHours(24)); // 过期时间
    RedisKeyDefine DISTRIBUTED_GENERATE_ID = new RedisKeyDefine("生成ID", // 备注
            "distributed_generate_id", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    RedisKeyDefine DATA_IMPORT_KEY = new RedisKeyDefine("数据导入的Key", // 备注
            "data_import_key:%s:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    RedisKeyDefine SUCCESS_IMPORT_UNIFIED_NOTIFICATION = new RedisKeyDefine("数据源导入成功时，统一通知的Key", // 备注
            "data_success_import_notice:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    RedisKeyDefine CHILD_TABLE_SUF_GET_LOCK = new RedisKeyDefine("数据子表锁", // 备注
            "child_table_suf_get_lock:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间
    RedisKeyDefine DATA_SUF_GET_LOCK = new RedisKeyDefine("数据锁", // 备注
            "data_suf_get_lock:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间
    RedisKeyDefine DATA_SEND_INCREMENT_PRE_KEY = new RedisKeyDefine("数据发生预计算key", // 备注
            "data_send_increment_pre_key", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    RedisKeyDefine DATA_GET_LOCK = new RedisKeyDefine("数据表锁", // 备注
            "data_get_lock:%s:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    RedisKeyDefine TABLE_SUFF = new RedisKeyDefine("表名后缀", // 备注
            "TABLE_SUFF:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


   //===================== 设备反欺诈缓存Key ==================================
    RedisKeyDefine DEVICE_FRAUD_INFO = new RedisKeyDefine("设备反欺诈信息", // 备注
            "device_fraud_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间



    //===================== 设备分组缓存Key ==================================
    RedisKeyDefine DEVICE_GROUP_INFO = new RedisKeyDefine("设备分组信息", // 备注
            "device_group_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== 流量过滤缓存Key ==================================
    RedisKeyDefine FLOW_FILTER_INFO = new RedisKeyDefine("流量过滤信息", // 备注
            "flow_filter_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== IP反欺诈缓存Key ==================================
    RedisKeyDefine IP_FRAUD_INFO = new RedisKeyDefine("IP反欺诈信息", // 备注
            "ip_fraud_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== 插件缓存Key ==================================
    RedisKeyDefine PLUGIN_INFO = new RedisKeyDefine("插件信息", // 备注
            "plugin_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 代理缓存Key ==================================
    RedisKeyDefine PROXY_INFO = new RedisKeyDefine("代理信息", // 备注
            "proxy_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== 国家缓存Key ==================================
    RedisKeyDefine COUNTRY_INFO = new RedisKeyDefine("国家信息", // 备注
            "country_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== 任务缓存Key ==================================
    RedisKeyDefine MISSION_INFO = new RedisKeyDefine("任务信息", // 备注
            "mission_info:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 任务和设备反欺诈关联缓存Key ==================================
    RedisKeyDefine RELATION_MISSION_DEVICE_FRAUD = new RedisKeyDefine("任务和设备反欺诈关联信息", // 备注
            "relation_mission_device_fraud:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 任务和设备反欺诈关联缓存Key ==================================
    RedisKeyDefine RELATION_MISSION_PROXY = new RedisKeyDefine("任务和代理关联信息", // 备注
            "relation_mission_proxy:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== 任务和插件关联缓存Key ==================================
    RedisKeyDefine RELATION_MISSION_PLUGIN = new RedisKeyDefine("任务和插件关联信息", // 备注
            "relation_mission_plugin:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 任务和IP反欺诈关联缓存Key ==================================
    RedisKeyDefine RELATION_MISSION_IP_FRAUD = new RedisKeyDefine("任务和IP反欺诈关联信息", // 备注
            "relation_mission_ip_fraud:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 任务和流量过滤关联缓存Key ==================================
    RedisKeyDefine RELATION_MISSION_FLOW_FILTER = new RedisKeyDefine("任务和流量过滤关联信息", // 备注
            "relation_mission_flow_filter:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 任务和设备分组关联缓存Key ==================================
    RedisKeyDefine RELATION_MISSION_DEVICE_GROUP = new RedisKeyDefine("任务和设备分组关联信息", // 备注
            "relation_mission_device_group:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间


    //===================== 认证部门ID缓存Key ==================================
    RedisKeyDefine DEPT_ID_FOR_AUTHENTICATION = new RedisKeyDefine("认证部门ID信息", // 备注
            "dept_id_for_authentication:", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间

    //===================== 任务发送信息缓存Key ==================================
    RedisKeyDefine MISSION_SEND_INFO = new RedisKeyDefine("任务发送信息", // 备注
            "mission_send_info:", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间
    RedisKeyDefine QUESTION_FIX_INFO = new RedisKeyDefine("问题代理修复", // 备注
            "question_fix_info:%s:%s", // 参数
            STRING,//Redis数据类型
            String.class, //参数类型
            RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // 过期时间;
}